package com.dzl.card.dao;

import com.dzl.base.mapper.BaseMapper;
import com.dzl.card.pojo.WelfareCardSecret;
import com.dzl.card.pojo.dto.WelfareCardSecretDto;
import com.dzl.card.pojo.query.WelfareCardSecretQuery;
import com.dzl.card.pojo.vo.WelfareCardExchangeSecretVo;
import com.dzl.card.pojo.vo.WelfareCardSecretVo;
import com.dzl.card.pojo.vo.WelfareUserCardSecretVo;
import com.dzl.fee.pojo.WelfareFeeUserCustomers;
import com.dzl.fee.pojo.WelfareFeeUserSales;
import com.dzl.fee.pojo.query.WelfareSalesCustomersQuery;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 卡密信息表(WelfareCardSecret)表数据库访问层
 * @author ChenLong
 * @since 2021-05-14 20:19:40
 */
public interface WelfareCardSecretMapper extends BaseMapper<WelfareCardSecret> {

    /**
     * 通过用户ID查询用户卡的详细信息
     * @date 2021/5/18 15:14
     * @author caobucao
     * @param userId 用户id
     * @return java.util.List<com.dzl.cardsecret.entity.vo.WelfareUserCardSecretVo>
     */
    List<WelfareUserCardSecretVo> selectUserCardSecretVoListByUserId(@Param("userId") Integer userId);

    /**
     * 服务端用户详情-用户未过期的卡列表
     * @date 2021/11/3 14:46
     * @author caobucao
     * @param userId 用户id
     * @param cardSecretId 卡密id
     * @return java.util.List<com.dzl.card.pojo.vo.WelfareUserCardSecretVo>
     */
    List<WelfareUserCardSecretVo> getUserWxCardInfoListNoExpiredById(
            @Param("userId") Integer userId,
            @Param("cardSecretId") Integer cardSecretId,
            @Param("notIncludedCardSecretId") Integer notIncludedCardSecretId);

    /**
     * 通过密钥查询卡或兑换券类型
     * @author ChenLong
     * @date 2021-07-10 10:13:14
     * @param secret 密钥
     * @return java.util.List
     **/
    List<WelfareCardExchangeSecretVo> getCardExchangeInfoBySecret(@Param("secret") String secret);

    /**
     * 获取用户卡密列表
     * @author ChenLong
     * @since 2021-05-19 16:18:24
     * @param welfareCardSecret welfareCardSecret
     * @return java.util.List<com.dzl.cardsecret.entity.WelfareCardSecret>
     **/
    List<WelfareUserCardSecretVo> getUserCardBindList(WelfareCardSecret welfareCardSecret);

    /**
     * 获取用户绑定的卡列表
     * @author ChenLong
     * @date 2021-06-08 16:50:04
     * @param userId 用户id
     * @return java.util.List<com.dzl.cardsecret.pojo.vo.WelfareUserCardSecretVo>
     **/
    List<WelfareUserCardSecretVo> getUserCardBindListForOrderPay(@Param("userId") Integer userId);

    /**
     * 获取福利卡详情
     * @author ChenLong
     * @since 2021-05-19 16:03:57
     * @param cardSecretId 卡密id
     * @return java.util.List<com.dzl.cardsecret.entity.WelfareCardSecret>
     **/
    WelfareUserCardSecretVo getUserCardBindInfo(@Param("cardSecretId") Integer cardSecretId);

    /**
     * 分页查询卡密列表
     * @date 2021/5/19 17:26
     * @author caobucao
     * @param query 查询条件
     * @return java.util.List<com.dzl.cardsecret.entity.vo.WelfareCardSecretVo>
     */
    List<WelfareCardSecretVo> selectWelfareCardSecretVoListPage(WelfareCardSecretQuery query);

    /**
     * 批量激活、冻结、解冻卡密
     * @date 2021/5/20 16:39
     * @author caobucao
     * @param dto 操作卡密对象
     * @return java.lang.Integer
     */
    Integer updateBatchCardSecretByIds(WelfareCardSecretDto dto);

    /**
     * 通过ids导出数据
     * @date 2021/5/20 9:48
     * @author caobucao
     * @param ids 选中卡密id
     * @return java.util.List<com.dzl.cardsecret.entity.vo.WelfareCardSecretVo>
     */
    List<WelfareCardSecretVo> selectWelfareCardSecretVoListByIds(@Param("ids") String ids);

    /**
     * 通过选中ids查询卡密列表
     * @date 2021/5/22 15:51
     * @author caobucao
     * @param ids  选中ids
     * @return java.util.List<com.dzl.cardsecret.pojo.WelfareCardSecret>
     */
    List<WelfareCardSecret> selectByIds(@Param("ids") String ids);

    /**
     * 查询当前年份的卡密总数
     * @date 2021/7/30 16:29
     * @author caobucao
     * @param s K+年份后两位
     * @return java.lang.Integer
     */
    Integer selectCountYearCard(@Param("s") String s);

    /**
     *查询该卡组下面的所有业务员
     * @date 2021/9/18 10:26
     * @author caobucao
     * @param query 查询条件
     * @return java.util.List<com.dzl.fee.pojo.WelfareFeeUserSales>
     */
    List<WelfareFeeUserSales> selectSalesByCardId(WelfareSalesCustomersQuery query);

    /**
     * 查询该卡组下面的客户
     * @date 2021/9/18 10:43
     * @author caobucao
     * @param query 查询条件
     * @return java.util.List<com.dzl.fee.pojo.WelfareFeeUserCustomers>
     */
    List<WelfareFeeUserCustomers> selectCustomersByCardId(WelfareSalesCustomersQuery query);

}

